/**
 * @author 徐楠
 * @date 2022/4/14 11:30
 * @version 1.0
 */

package com.xunan.likou;

public class ProductOfArraysOtherThanItself {
    public static void main(String[] args) {
        int[] nums = {1,2,3,4};
        int[] result = productExceptSelf(nums);
        for (int i : result) {
            System.out.println(i);
        }

    }

    public static int[] productExceptSelf(int[] nums) {
        int[] result = new int[nums.length];
        int k = 1;
        for(int i = 0; i < result.length; i++){
            result[i] = k;
            k = k * nums[i]; // 此时数组存储的是除去当前元素左边的元素乘积
        }
        k = 1;
        for(int i = result.length - 1; i >= 0; i--){
            result[i] *= k; // k为该数右边的乘积。
            k *= nums[i]; // 此时数组等于左边的 * 该数右边的。
        }
        return result;
    }
}
